/**
 * <b>项目名：</b>deji.saas.tools.zhibo<br/>
 * <b>包名：</b>com.deji.dao<br/>
 * <b>文件名：</b>MongoDAO.java<br/>
 * <b>版本信息：</b>V1.0<br/>
 * <b>日期：</b>2014-9-1-下午03:03:48<br/>
 * <b>作者：</b><br/>
 * <b>Copyright (c)</b> 2016德济科技有限责任公司-版权所有<br/>
 */
package com.mdxl.first.Dao;

import com.mdxl.first.Dao.db.MongoDBConnection;
import com.mdxl.first.util.KeegooConfig;
import com.mongodb.ReadPreference;

/**
 * MongoDAO 读写并行
 * 
 */
public class MongoDAO extends AbstractMongoDAO{
	
	private static MongoDAO instance = new MongoDAO();
	
	private MongoDAO(){
		super.dbConnection = new MongoDBConnection();
		super.db = super.dbConnection.getDB(KeegooConfig.mongoDBName);
		/**
		 * primary 主节点，默认模式，读操作只在主节点，如果主节点不可用，报错或者抛出异常。
		   primaryPreferred 首选主节点，大多情况下读操作在主节点，如果主节点不可用，如故障转移，读操作在从节点。
		   secondary 从节点，读操作只在从节点， 如果从节点不可用，报错或者抛出异常。
		   secondaryPreferred 首选从节点，大多情况下读操作在从节点，特殊情况（如单主节点架构）读操作在主节点。
		   nearest	最邻近节点，读操作在最邻近的成员，可能是主节点或者从节点
		 */
		super.db.setReadPreference(ReadPreference.nearest());
	}
	
	public static MongoDAO getInstance(){
		return instance;
	}
	
}
